Stored Procedures [dbo].[asi_CreateIndividual]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)
@contactKeyuniqueidentifier16
@idnvarchar(20)40
@fullNamenvarchar(110)220
@lastFirstnvarchar(110)220
@prefixnvarchar(25)50
@firstNamenvarchar(20)40
@middleNamenvarchar(20)40
@lastNamenvarchar(30)60
@suffixnvarchar(10)20
@designationnvarchar(20)40
@informalnvarchar(20)40
@gendernvarchar1
@noSolicitationFlagbit1
@statusCodenvarchar(5)10
@birthdatedatetime8
@companyContactKeyuniqueidentifier16
@companyNamenvarchar(80)160
@companyTitlenvarchar(80)160
@createdByUserKeyuniqueidentifier16
SQL Script
CREATE PROCEDURE [dbo].[asi_CreateIndividual]
    @contactKey uniqueidentifier,
    @id nvarchar(20),
    @fullName nvarchar(110),
    @lastFirst nvarchar(110),
    @prefix nvarchar(25),
    @firstName nvarchar(20),
    @middleName nvarchar(20),
    @lastName nvarchar(30),
    @suffix nvarchar(10),
    @designation nvarchar(20),
    @informal nvarchar(20),
    @gender nvarchar(1),
    @noSolicitationFlag bit,
    @statusCode nvarchar(5),
    @birthdate datetime,
    @companyContactKey uniqueidentifier,
    @companyName nvarchar(80),
    @companyTitle nvarchar(80),
    @createdByUserKey uniqueidentifier
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @now datetime
    DECLARE @entityKey uniqueidentifier
    DECLARE @defaultOrganizationKey uniqueidentifier
    DECLARE @accessKey uniqueidentifier
    DECLARE @individualTypeKey uniqueidentifier
    DECLARE @registryKey uniqueidentifier

    SET @now = getdate()
    SELECT @entityKey = SystemEntityKey FROM SystemEntity WHERE SystemKeyword = 'Organization'
    SELECT @defaultOrganizationKey = OrganizationKey FROM OrganizationMain WHERE IsDefault = 1
    SELECT @accessKey = ParameterValue FROM SystemConfig
        WHERE ParameterName = 'Security.Token.EveryoneFullControlAccessKey'
            and SystemEntityKey = @entityKey and OrganizationKey = @defaultOrganizationKey
    SELECT @individualTypeKey = ContactTypeKey from ContactTypeRef where IsInstitute = 0

    -- Create UniformRegistry entry for individual
    SELECT @registryKey = ComponentKey FROM ComponentRegistry
          WHERE Name = 'Individual' and InterfaceName = 'BusinessController'
    INSERT UniformRegistry (UniformKey, ComponentKey)
    VALUES (@contactKey, @registryKey)

    -- Create new contact
    INSERT INTO [ContactMain]
               ([ContactKey], [ContactStatusCode], [FullName], [SortName], [IsInstitute], [NoSolicitationFlag],
                [SyncContactID], [ID], [IsIDEditable], [CreatedByUserKey], [CreatedOn], [UpdatedByUserKey], [UpdatedOn], [PreferredAddressCategoryCode],
                [IsSortNameOverridden], [AccessKey], [TextOnlyEmailFlag], [ContactTypeKey], [OptOutFlag])
      VALUES (@contactKey, @statusCode, @fullName, @lastFirst, 0, @noSolicitationFlag, @id, @id, 0,
              @createdByUserKey, @now, @createdByUserKey, @now, '1', 0, @accessKey, 0, @individualTypeKey, 0)

    -- Create prefix and suffix if necessary
    IF @prefix = '' SET @prefix = NULL
    IF @prefix IS NOT NULL AND @prefix NOT IN (SELECT PrefixCode FROM PrefixRef)
        INSERT INTO [PrefixRef] (PrefixCode, PrefixDesc, SyncPrefixCode, PrefixKey)
        VALUES (@prefix, @prefix, @prefix, newid())
    IF @suffix = '' SET @suffix = NULL
    IF @suffix IS NOT NULL AND @suffix NOT IN (SELECT SuffixCode FROM SuffixRef)
        INSERT INTO [SuffixRef] (SuffixCode, SuffixDesc, SyncSuffixCode, SuffixKey)
        VALUES (@suffix, @suffix, @suffix, newid())

    -- Create new Individual
    INSERT INTO [Individual]
                (ContactKey, PrefixCode, FirstName, MiddleName, LastName, SuffixCode, Designation, Informal,
                 Gender, BirthDate, PrimaryInstituteContactKey, PrimaryInstituteName, PrimaryInstituteTitle)
    VALUES      (@contactKey, @prefix, @firstName, @middleName, @lastName, @suffix, @designation, @informal,
                 @gender, @birthdate, @companyContactKey, @companyName, @companyTitle)
    
    -- Generate default contact salutations for this new contact
    EXEC asi_GenerateSalutations @contactKey

    -- Generate empty FullAddress records and AddressToUse for this new contact
    -- TODO:  EXEC asi_GenerateFullAddresses
END

GO
Uses